package negocio;

import java.io.Serializable;
import java.util.ArrayList;

import java.util.List;


import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name="PlanProduccion")
public class PlanProduccion implements Serializable  {
	
	
	
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="id_plan_produccion", nullable=false)
	private int id_plan_produccion;
	
	@Column(name="estado", nullable=true)
	private float estado;
	@Column(name="tiempoDisponible", nullable=true)
	private int tiempoDisponible;
	
	@OneToMany(cascade=CascadeType.ALL)
	@JoinColumn(name="id_plan_produccion", referencedColumnName="id_plan_produccion")
	private List<Tarea> tareas = new ArrayList<>();
	
	public float getEstado() {
		return estado;
	}
	public void setEstado(float estado) {
		this.estado = estado;
	}
	public int getTiempoDisponible() {
		return tiempoDisponible;
	}
	public void setTiempoDisponible(int tiempoDisponible) {
		this.tiempoDisponible = tiempoDisponible;
	}
	public List<Tarea> getTareas() {
		return tareas;
	}
	public void setTareas(List<Tarea> tareas) {
		this.tareas = tareas;
	}
	public int getId_plan_produccion() {
		return id_plan_produccion;
	}
	public void setId_plan_produccion(int id_plan_produccion) {
		this.id_plan_produccion = id_plan_produccion;
	}
	@Override
	public String toString() {
		return "PlanProduccion [id_plan_produccion=" + id_plan_produccion
				+ ", estado=" + estado + ", tiempoDisponible="
				+ tiempoDisponible + ", tareas=" + tareas + "]";
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + Float.floatToIntBits(estado);
		result = prime * result + id_plan_produccion;
		result = prime * result + ((tareas == null) ? 0 : tareas.hashCode());
		result = prime * result + tiempoDisponible;
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		PlanProduccion other = (PlanProduccion) obj;
		if (Float.floatToIntBits(estado) != Float.floatToIntBits(other.estado))
			return false;
		if (id_plan_produccion != other.id_plan_produccion)
			return false;
		if (tareas == null) {
			if (other.tareas != null)
				return false;
		} else if (!tareas.equals(other.tareas))
			return false;
		if (tiempoDisponible != other.tiempoDisponible)
			return false;
		return true;
	}
	
	
	
	
}
